#ifndef LASER_H
#define LASER_H

#include "GameObject.h"
#include "Activatable.h"
#include "LaserStepCalculator.h"
#include "ActivateAbility.h"
#include "BlockMoveAbility.h"

class Laser: public GameObject, public Activatable
{
public:
	Laser();
	virtual ~Laser();

	void Activate();
	void SetShootDirection(const Direction& direction);
	StepCalculator* GetActivationBehavior();

	// Test code
	void MoveTo(unsigned int cellX, unsigned int cellY);
	std::string ToString() const { return "L"; }

protected:

private:
	LaserStepCalculator behavior;
	Direction shootDirection;
	ActivateAbility* activateAbility;
	BlockMoveAbility* blockMoveAbility;
};

#endif //LASER_H
